package com.sojson.project.sys.role.service.impl;

import java.util.List;
import java.util.Set;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.sojson.project.sys.role.dao.UserRoleDao;
import com.sojson.project.sys.role.entity.dto.UserRoleDto;
import com.sojson.project.sys.role.entity.dto.UserRolePageDto;
import com.sojson.project.sys.role.entity.po.UserRole;
import com.sojson.project.sys.role.entity.vo.UserRoleVo;
import com.sojson.project.sys.role.service.UserRoleService;

/**
 * 用户和角色关联表Service实现类
 * 
 * @author liu
 * @date 2022-09-16
 */
@Service
public class UserRoleServiceImpl extends ServiceImpl<UserRoleDao, UserRole> implements UserRoleService {

    @Resource
    private UserRoleDao userRoleDao;

    /**
     * 通过对象查找
     * 
     * @param dto
     * @return
     */
    @Override
    public List<UserRoleVo> list(UserRoleDto dto) {
        List<UserRoleVo> list = userRoleDao.list(dto);
        return list;
    }

    /**
     * 通过对象分页查找
     * 
     * @param dto
     * @return
     */
    @Override
    public List<UserRoleVo> page(UserRolePageDto dto) {
        List<UserRoleVo> page = userRoleDao.page(dto);
        return page;
    }

    /**
     * 通过对象删除
     * 
     * @param dto
     * @return
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public boolean removeByDto(UserRoleDto dto) {
        userRoleDao.removeByDto(dto);
        return true;
    }

    /**
     * 清空数据
     * 
     * @return
     */
    @Override
    public boolean clear() {
        userRoleDao.clear();
        return true;
    }

    /**
     * 通过用户ID数组删除
     * 
     * @param ids
     * @return
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public int deleteByUserIds(Set<String> ids) {
        return userRoleDao.deleteByUserIds(ids);
    }

    /**
     * 通过角色ID数组删除
     * 
     * @param ids
     * @return
     */
    @Override
    public int deleteByRoleIds(Set<String> ids) {
        return userRoleDao.deleteByRoleIds(ids);
    }

}